通俗易懂地了解faster RCNN(RPN区域建议网络)

您所在的位置:网站首页 faster rcnn roi pooling 代码 通俗易懂地了解faster RCNN(RPN区域建议网络)

通俗易懂地了解faster RCNN(RPN区域建议网络)

2023-10-13 16:44| 来源: 网络整理| 查看: 265

faster RCNN[2015 Ren]

回顾 R-CNN ==> 1image/mni Fast R-CNN ==> 1~2 fps

1. faster RCNN

faster-rcnn.png

Backbone(神经网络模型) pre-train(预训练)fine-tuning(微调)re-train RPN:Region Proposal Net(区域生成网络 ) 代替selective searchs生成区域建议输入feature map(特征图),输出一系列ROI(感兴趣区域) Fast RCNN:ROI + {Classification; Regression}可近似的Faster RCNN = RPN + Fast R-CNN 2. Backbone

作用:提取特征(一次)

不用给每个ROI都提取特征通过RPN将提取的特征来生成区域建议

结构:ZF / Resnet / VGG16(13 conv + 13 Relu + 4 Pooling)

把网络结构当积木来用的思维比如想要算快一些,网络换成mobile net, shuffle net都是可以的

输出 Batchsize x Channel x H/16 x W / 16 (VGG16举例)

faster rcnn将尺寸为1000 x 800大小的feature map归一化到600 x 800的尺寸,则其输出的特征图大小为 1 x 256 x 38 x 50

backbone获取特征图信息,然后用RPN网络筛选候选框和ROIPooling输出相同尺寸的特征图,整个faster rcnn如下图

fast-rcnn_backbone_me11.png

3. RPN

Test 网络结构

fast-rcnn_RPN.png

3x3卷积主要作用是语义转化,可以增加网络复杂程度,增加RPN的拟合能力1x1卷积用于通道转换,原则上可以转换成任意通道的特征图例如经过上面支线的1x1卷积后的尺寸为38x50x18,经过第一个reshape将尺寸变为(2, 38x50x9)其中2表示用于二分类判断是否是ROI;判断完后再reshape回38x50x18经过下面支线的1x1卷积后的尺寸为38x50x36,36等于4x9,其中4表示坐标信息,用于左边回归预测3和4中的9指的是9个anchor3x3卷积后两条支线合并,输出区域建议(坐标)信息

RPN目标

生成region proposal区域建议因为流程为先RPN找出区域建议的物体,然后在做更加精细的类别划分和Bbox回归,这种方式被称为Two-Stage因此有人认为两阶段检测比一阶段检测更准

Anchor

faster-rcnn_anchor.png

代表在原图中的区域(目标在的地方)有不同的大小和比例anchor去覆盖所有种类的对象3种大小(8,16,32),3种比例(1:1,1:2,2:1),共9个框以特征图w=50,,h=38为例,特征图中每个特征点对于原图中9个框(anchor)对应生成 anchor = 1 x 9 x 38 x 50 = 17100个框边缘筛除去除一些出了边界的anchor,及其去除一些比较小的anchor,得到12k左右anchor,再用IOU计算和NMS算法筛选,最后剩余2k左右anchor

Train 网络结构

faster-rcnn_net_train.png

Train网络结构中RPN的Test两条支线如下 faster-rcnn_net_train_11.png

faster RCNN 网络结构手绘制版

faster-rcnn_net_byhand.png

gt为图片中真实标记的框,与init anchor(anchor create)生成的anchor做iou计算和NMS算法筛选,得到分类和回归的正负样本(2k个左右anchor box),是监督网络学习的监督信息通过***gt生成anchor的过程***(对应手绘制RPN网络结构中左边的rpn-data)如下,每个anchor都有分类信息(2个)、和gt对应的偏移量(4个, △x,△y,△w,△h) 共6个值,9个anchor共54个值

anchor_value1.png

将正负样本分别和分类回归的预测做loss计算,一个为分类loss,一个为回归loss,两个loss加一起就可以训练RPN网络手绘制RPN网络结构蓝色部分为测试,红色部分为训练蓝色(20+1) x 4 中20为类别

Smooth L1 loss

RPN在做回归时,上图Train网络结构中绿线框选的部分,需要先做掩膜版(Mask) faster-rcnn_anchor_mask.pngSmooth L1 Loss公式 faster-rcnn_anchor_smoothL1Loss.pngSmooth L1 loss作用 预测偏移量对大小物体一视同仁,做归一化 偏移量回归 we hope a -> t, but actually a generate p. So as long as p -> t, we get a good result. So as long as the offset of p-a -> t-a We get a good result So here we hope t. -> t.*

RPN训练细节

取IOU > 0.7 的anchor作为前景FG取IOU < 0.3 的anchor作为背景BGIOU在0.3和0.7的anchor去除batchsize为128,fg和bg的比例为1:3 4. 训练

Faster RCNN = RPN + Fast R-CNN

问题

rpn需要训练,fast rcnn也需要训练;共用的话,训练rpn时backbone变了,用rpn的数据训练fast rcnn时,backbone又变了,会导致rpn不准确

weight share(权重共享) RPN包含backbone,Fast rcnn也包含backbone,Fast rcnn需要用到RPN的输出

训练四阶段

faster-rcnn_net_byhand.png

分布联合训练

仅训练rpn,backbone更新,rpn-unique(专有部分网络)也更新把1中rpn的结果用于fast rcnn训练,backbone共享,backbone更新,fast rcnn(专有部分网络)也更新使用2中更新过的backbone重新训练rpn,固定rpn,更新rpn unique使用3中的rpn训练fast rcnn,backbone固定,更新fast rcnn unique

rpn的region proposal区域建议用于fast rcnn训练,backbone更新,fast rcnn的专有网络也更新

附:

faster rcnn代码实现

faster rcnn框架/库mmdetection

faster rcnn框架/库detectron2



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3